package edu.csl.study.scala.basic.demo

/***
 * 样例类
 * 1.用case将class变成样例类
 * 2.cass class必须声明一个主构造器
 * 3.case class隐式构造一个空构造器
 * 4.case class不需要new就可以创建类的实例对象
 * 5.case class默认混入序列化特质
 *
 *
 * Scala中样例类和普通类的区别：Scala中样例类的设计主要是为了代替Java语言中的JavaBean和RPC通信使用
 * （1）普通类在编译后只会生成一个类名.class文件；而样例类会生成伴生类.class文件和伴生对象的.class文件。
 *
 * （2）样例类自动实现了序列化接口
 *
 * （3）样例类的构造器中的参数默认的是val类型的(可以修改为var，但是不推荐)。
 *
 * （4）样例类自动创建伴生对象，同时在里面给我们实现了apply方法，使我们在使用的时候可以不直接使用new创建对象。
 *
 * （5）伴生对象中同样会帮我们实现unapply方法，从而可以将case class应用于模式匹配匹配某个对象的时候。
 *
 * （6）实现自己的toString、hashCode、copy、equals方法
 *
 * 注意：case class最重要的功能，支持模式匹配，这也是定义case class的重要原因。
 *
 *
 * case class 和 case object 区别：
 *  1.类中有参和无参，当类有参数的时候，用case class ，当类没有参数的时候那么用case object。
 *
 *
 * case class 与 class 区别：
 *  1.初始化的时候可以不用new，也可以加上，但是普通类必须加new;
 *  2.默认实现了equals、hashCode方法；
 *  3.默认是可以序列化的，实现了Serializable；
 *  4.自动从scala.Product中继承一些函数;
 *  5.case class 构造函数参数是public的，我们可以直接访问；
 *  6.case class默认情况下不能修改属性值；
 *  7.case class最重要的功能，支持模式匹配，这也是定义case class的重要原因。
 *
 *
 */
case class CaseDemo(v1:String,v2:Int) {
  var name = v1
  var age = v2
}